package com.xuqm.sdhbwfu.app.model


import com.google.gson.annotations.SerializedName
import com.xuqm.base.adapter.BaseItem

data class PmTaskModel(
    @SerializedName("code")
    val code: String,
    @SerializedName("createTime")
    val createTime: String,
    @SerializedName("firstCondition")
    val firstCondition: FirstCondition,
    @SerializedName("id")
    val id: Int,
    @SerializedName("implementer")
    val implementer: String,
    @SerializedName("materialPreparation")
    val materialPreparation: MaterialPreparation,
    @SerializedName("mopId")
    val mopId: Int,
    @SerializedName("name")
    val name: String,
    @SerializedName("overview")
    val overview: String,
    @SerializedName("pmItemDTO")
    val pmItemDTO: PmItemDTO,
    @SerializedName("pmTaskStepStatus")
    val pmTaskStepStatus: String,
    @SerializedName("pmTaskworkNum")
    val pmTaskworkNum: String,
    @SerializedName("prepareImplementer")
    val prepareImplementer: String,
    @SerializedName("safetyGuarantee")
    val safetyGuarantee: SafetyGuarantee,
    @SerializedName("stepMain")
    val stepMain: StepMain,
    @SerializedName("stepNum")
    val stepNum: Int,
    @SerializedName("taskId")
    val taskId: String,
    @SerializedName("toolPreparation")
    val toolPreparation: ToolPreparation,
    @SerializedName("updateTime")
    val updateTime: String,
    @SerializedName("version")
    val version: Double
) : BaseItem() {
    data class FirstCondition(
        @SerializedName("contents")
        val contents: MutableList<PmTaskContent>,
        @SerializedName("createTime")
        val createTime: String,
        @SerializedName("endTime")
        val endTime: String,
        @SerializedName("firstConditionSign")
        val firstConditionSign: String,
        @SerializedName("firstConditionStatus")
        var firstConditionStatus: String,
        @SerializedName("id")
        val id: Int,
        @SerializedName("updateTime")
        val updateTime: String
    )

    data class MaterialPreparation(
        @SerializedName("contents")
        val contents: MutableList<PmTaskContent>,
        @SerializedName("createTime")
        val createTime: String,
        @SerializedName("endTime")
        val endTime: String,
        @SerializedName("id")
        val id: Int,
        @SerializedName("materialPreparationSign")
        val materialPreparationSign: String,
        @SerializedName("materialPreparationStatus")
        var materialPreparationStatus: String,
        @SerializedName("updateTime")
        val updateTime: String
    )

    data class PmItemDTO(
        @SerializedName("code")
        val code: String,
        @SerializedName("createTime")
        val createTime: String,
        @SerializedName("cycle")
        val cycle: String,
        @SerializedName("enabled")
        val enabled: Boolean,
        @SerializedName("grade")
        val grade: String,
        @SerializedName("id")
        val id: Int,
        @SerializedName("maintenanceObject")
        val maintenanceObject: String,
        @SerializedName("mopVersion")
        val mopVersion: String,
        @SerializedName("profession")
        val profession: String,
        @SerializedName("provider")
        val provider: String,
        @SerializedName("providerCode")
        val providerCode: String,
        @SerializedName("schemas")
        val schemas: List<Schema>,
        @SerializedName("seq")
        val seq: Int,
        @SerializedName("systemName")
        val systemName: String,
        @SerializedName("updateTime")
        val updateTime: String,
        @SerializedName("updateUserCode")
        val updateUserCode: String,
        @SerializedName("updateUserName")
        val updateUserName: String
    ) {
        data class Schema(
            @SerializedName("code")
            val code: String,
            @SerializedName("createTime")
            val createTime: String,
            @SerializedName("id")
            val id: Int,
            @SerializedName("name")
            val name: String,
            @SerializedName("updateTime")
            val updateTime: String
        )
    }

    data class SafetyGuarantee(
        @SerializedName("contents")
        val contents: MutableList<PmTaskContent>,
        @SerializedName("createTime")
        val createTime: String,
        @SerializedName("endTime")
        val endTime: String,
        @SerializedName("id")
        val id: Int,
        @SerializedName("safetyGuaranteeSign")
        val safetyGuaranteeSign: String,
        @SerializedName("safetyGuaranteeStatus")
        var safetyGuaranteeStatus: String,
        @SerializedName("updateTime")
        val updateTime: String
    )

    data class StepMain(
        @SerializedName("createTime")
        val createTime: String,
        @SerializedName("id")
        val id: Int,
        @SerializedName("items")
        val items: List<Item>,
        @SerializedName("maintainSummary")
        val maintainSummary: String,
        @SerializedName("mopId")
        val mopId: Int,
        @SerializedName("stepMainStatus")
        var stepMainStatus: String,
        @SerializedName("updateTime")
        val updateTime: String
    ) {
        data class Item(
            @SerializedName("assetCode")
            val assetCode: String,
            @SerializedName("assetName")
            val assetName: String,
            @SerializedName("bankMangerSign")
            val bankMangerSign: String,
            @SerializedName("contents")
            val contents: MutableList<PmTaskContent>,
            @SerializedName("createTime")
            val createTime: String,
            @SerializedName("endTime")
            val endTime: String,
            @SerializedName("followConstructerSign")
            val followConstructerSign: String,
            @SerializedName("id")
            val id: Int,
            @SerializedName("implementerSign")
            val implementerSign: String,
            @SerializedName("mainId")
            val mainId: Int,
            @SerializedName("stepMainStatus")
            var stepMainStatus: String,
            @SerializedName("updateTime")
            val updateTime: String,
            @SerializedName("maintainSummary")
            val maintainSummary: String
        )
    }

    data class ToolPreparation(
        @SerializedName("contents")
        val contents: MutableList<PmTaskContent>,
        @SerializedName("createTime")
        val createTime: String,
        @SerializedName("endTime")
        val endTime: String,
        @SerializedName("id")
        val id: Int,
        @SerializedName("toolPreparationSign")
        val toolPreparationSign: String,
        @SerializedName("toolPreparationStatus")
        var toolPreparationStatus: String,
        @SerializedName("updateTime")
        val updateTime: String
    )
}
